package com.dream.technology.mybatisUtils;//package com.dream.technology.mybatisUtils;
//
//import org.apache.ibatis.executor.Executor;
//import org.apache.ibatis.mapping.MappedStatement;
//import org.apache.ibatis.mapping.SqlCommandType;
//import org.apache.ibatis.plugin.*;
//
//import java.lang.reflect.Field;
//import java.util.Date;
//import java.util.Properties;
//
///**
// * 描述：
// *
// * @author chen_q_i@163.com
// * 2018/12/12 : 13:41.
// * @version : 1.0
// */
//@Intercepts({ @Signature(type = Executor.class, method = "insert", args = { MappedStatement.class, Object.class }) })
//public class InsertTimeInterceptor  implements Interceptor {
//
//    @Override
//    public Object intercept(Invocation invocation) throws Throwable {
//        MappedStatement mappedStatement = (MappedStatement) invocation.getArgs()[0];
//        // 获取 SQL 命令
//        SqlCommandType sqlCommandType = mappedStatement.getSqlCommandType();
//        // 获取参数
//        Object parameter = invocation.getArgs()[1];
//        if (parameter != null) {
//            // 获取成员变量
//            Field[] declaredFields = parameter.getClass().getDeclaredFields();
//            for (Field field : declaredFields) {
//                // update 语句插入 updateTime
//                if (field.getAnnotation(UpdateTime.class) != null||field.getAnnotation(CreateTime.class) != null) {
//                    if (SqlCommandType.INSERT.equals(sqlCommandType) || SqlCommandType.UPDATE.equals(sqlCommandType)) {
//                        field.setAccessible(true);
//                        if (field.get(parameter) == null) {
//                            field.set(parameter, new Date());
//                        }
//                    }
//                }
//            }
//        }
//        //同样的方式也可以在这里添加create_time或者是id的生成等处理
//
//        return invocation.proceed();
//    }
//
//    @Override
//    public Object plugin(Object target) {
//        return Plugin.wrap(target, this);
//    }
//
//    @Override
//    public void setProperties(Properties properties) {
//    }
//}
